using LF.Shared.Dtos.Out;
using LF.Shared.Dtos.Input;
using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;

namespace LF.Application.Services
{
    public interface IMenuService : IApplicationService
    {
        /// <summary>
        /// 获取菜单树
        /// </summary>
        Result<List<MenuOut>> List();

        /// <summary>
        /// 获取菜单列表
        /// </summary>
        Result<MenuSearchOut> Menus([FromQuery]MenuSearch search);

        /// <summary>
        /// 获取菜单详情
        /// </summary>
        Result<MenuOut> Get(Guid id);

        /// <summary>
        /// 创建菜单
        /// </summary>
        Result Create([FromBody]MenuOut menu);

        /// <summary>
        /// 更新菜单
        /// </summary>
        Result Update(Guid id, [FromBody]MenuOut menu);

        /// <summary>
        /// 删除菜单
        /// </summary>
        Result Delete(Guid id);

        /// <summary>
        /// 获取用户的权限编码列表
        /// </summary>
        /// <param name="userId">用户ID</param>
        /// <returns>权限编码列表</returns>
        Result<List<string>> GetPermissionCodes(Guid userId);

        /// <summary>
        /// 获取当前用户的权限编码列表
        /// </summary>
        /// <returns>权限编码列表</returns>
        Result<List<string>> GetCurrentUserPermissions();
    }
} 